Programmable devices are well known. In one class of known PLDs, each device has a large number of logic gates, and a user programs the device to assume a particular configuration of those logic gates, frequently using a software tool provided by the manufacturer of the device, with the software tool being executed on a computer having an adapter into which the device is inserted.
In many instances, users have an interest in preventing their competitors from determining their particular logic gate configurations. Earlier systems addressed this concern by implementing various security measures, such as encryption algorithms. Commonly-assigned U.S. Pat. Nos. 5,768,372 and 5,915,017, each of which is hereby incorporated by reference herein in its respective entirety, describe the encryption of the configuration data stored in the nonvolatile storage and its decryption upon loading into the programmable device. However, some encryption keys can be deciphered by bombarding the device with false configuration data and analyzing the device's response to the false data. It is particularly difficult to secure against this type of attack because it is performed before the device enters the user-mode, where many security algorithms are implemented.